package com.coderush.admin.sys.model.vo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.coderush.admin.core.annotation.ConvertDateField;
import com.coderush.admin.core.annotation.ConvertEnumField;
import com.coderush.admin.core.annotation.ConvertStrIdField;
import com.coderush.admin.sys.enums.CompanyStatusEnum;
import com.coderush.admin.sys.enums.RoleStatusEnum;
import com.coderush.admin.sys.enums.RoleTypeEnum;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * PackageName com.coderush.admin.sys.model.vo
 *
 * @Author Eason
 * @Version v1.0
 * @ClassName RolePageVo
 * @Date 2025/8/29
 * @Description TODO
 */
@Data
public class RolePageVo {

    /**
     * 主键ID
     */
    @ConvertStrIdField(sourceFieldName = "id")
    private String id;

    /**
     * 角色名称，如：系统管理员、部门经理、普通员工
     */
    private String roleName;

    /**
     * 角色编码，唯一标识，用于程序识别，如：admin, dept_manager
     */
    private String roleCode;

    /**
     * 角色排序（升序）
     */
    private Integer roleSort;

    /**
     * 状态：1-启用，0-停用
     */
    @ConvertEnumField(enumClass = RoleStatusEnum.class, sourceFieldName = "roleStatus")
    private String roleStatusStr;

    /**
     * 状态：1-启用，0-停用
     */
    private Integer roleStatus;

    /**
     * 角色类型：1-系统内置，2-自定义角色
     */
    @ConvertEnumField(enumClass = RoleTypeEnum.class, sourceFieldName = "roleType")
    private String roleTypeStr;

    /**
     * 数据权限层级，用于控制可见范围（常见于 HR/财务系统）
     */
    private Integer dataScope;

    /**
     * 角色说明，描述该角色的职责和权限范围
     */
    private String description;

    /**
     * 创建时间Str
     */
    @ConvertDateField(sourceFieldName = "createTime", pattern = "yyyy-MM-dd")
    private String createTimeStr;



}